package portal.vo;

import java.text.SimpleDateFormat;
import java.util.Date;


public class ProductoVO implements AbstractVO{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/**
     * Formato de la fecha
     */
    private static final String FORMATO_FECHA = "yyyy-MM-dd";

    /**
     * Formateador de la fecha
     */
    private static SimpleDateFormat fechaFormater = new SimpleDateFormat(
        FORMATO_FECHA);
	
	private Long id;
	private String nombre;
	private Long codigo;
	private String descripcion;
	private String marca;
	private String imagen;
	private Double precio;
	private String paisOrigen;
	private Date fecha;
	private Integer ranking; //bestsellers
	
	public ProductoVO(){
		this.nombre = "";
		this.descripcion = "";
		this.marca="";
		this.paisOrigen = "";
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre == null ? "": nombre;
	}

	public Long getCodigo() {
		return codigo;
	}

	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion == null ? "": descripcion;
	}

	public String getMarca() {
		return marca;
	}

	public void setMarca(String marca) {
		this.marca = marca == null ? "": marca;
	}

	public Double getPrecio() {
		return precio;
	}

	public void setPrecio(Double precio) {
		this.precio = precio;
	}

	public String getPaisOrigen() {
		return paisOrigen;
	}

	public void setPaisOrigen(String paisOrigen) {
		this.paisOrigen = paisOrigen == null ? "": paisOrigen;
	}

	public String getImagen() {
		if(imagen==null || imagen.isEmpty()) return "images/nopic.gif";
		else return imagen;
	}

	public void setImagen(String imagen) {
		this.imagen = imagen;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	
	public String getFechaString() {
		if (this.getFecha() != null) {
            return fechaFormater.format(this.getFecha());
        } else {
            return "";
        }
	}

	public Integer getRanking() {
		return ranking;
	}

	public void setRanking(Integer ranking) {
		this.ranking = ranking;
	}
	
	//TODO: implementar esta logica para mostrar detalles de todos los prodcutos
	
	public ProductoElectroDomesticoVO getProductoElectroDomesticoVO(){
		if(this instanceof ProductoElectroDomesticoVO) return (ProductoElectroDomesticoVO)this;
		else return null;
	}
	
	public ProductoInfantilVO getProductoInfantilVO(){
		if(this instanceof ProductoInfantilVO) return (ProductoInfantilVO)this;
		else return null;
	}
	
	public ProductoModaVO getProductoModaVO(){
		if(this instanceof ProductoModaVO) return (ProductoModaVO)this;
		else return null;
	}

	public ProductoMuebleVO getProductoMuebleVO(){
		if(this instanceof ProductoMuebleVO) return (ProductoMuebleVO)this;
		else return null;
	}
	
	public String getCategoria(){
		return "";
	}

}
